/**
* 单例模式
*/
#include <iostream>

class Singleton {
private:
    Singleton() = default; // 默认构造

public:
    ~Singleton() = default; // 默认析构
    Singleton(const Singleton &) = delete; // 不允许拷贝
    Singleton &operator=(const Singleton &) = delete; // 不允许赋值

    static Singleton &getInstance() {
        static Singleton instance;
        return instance;

    }

    void func() {
        std::cout << "call func:" << this << std::endl;
    }
};


int main() {
    // 注意在使用的时候需要声明单例的引用 Single& 才能获取对象
    Singleton &inst = Singleton::getInstance();
    inst.func();
    return 0;
}